package com.itheima.dao;

import com.itheima.domain.Goods;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface GoodsDao {

    /**
     * 添加数据
     *
     * @param goods 商品信息
     * @return 添加结果
     */
    int add(Goods goods);

    /**
     * 修改商品信息
     *
     * @param goods 商品信息
     * @return 修改结果
     */
    int update(Goods goods);

    /**
     * 删除商品
     *
     * @param id 商品编号
     * @return 删除结果
     */
    int delete(@Param("id") String id);

    /**
     * 调用 select1() 方法，查询出所有10月份上架的商品，
     * 并且按照价格进行分组，统计每种价格的商品数量，将分组后结果小于1的分组剔除
     *
     * @param map 查询条件(startTime, endTime)
     * @return Map
     */
    Map<String, Object> select1(Map<String, Object> map);


    /**
     * 使用一条SQL语句统计出商品中，最低价、最高价、总的商品金额、平均商品金额
     *
     * @return Map
     */
    Map<String, Object> select2();

    /**
     * 查询出所有价格在 100~200之间的商品，并且根据价格从低到高排序
     *
     * @param map 查询条件(startPrice, endPrice)
     * @return Map
     */
    List<Goods> select3(Map<String, Object> map);

    /**
     * 查询出所有华为的产品
     *
     * @param goodsName 产品名
     * @return 产品列表
     */
    List<Goods> select4(@Param("goodsName") String goodsName);


    /**
     * 将所有商品进行分页，
     * 根据方法接收到的页码和每页显示条数两个参数，
     * 来进行数据分页，根据上架时间降序排序
     *
     * @param condition 查询条件(page, pageSize)
     * @return 产品列表
     */
    List<Goods> select5(Map<String, Integer> condition);
}
